Главная arrow книги arrow Копия Глава 8. Логика первого порядка arrow Проблемная область электронных схем
Проблемная область электронных схем

Определение словаря

Теперь нам известно, что нужно вести речь о схемах, клеммах, сигналах и логических элементах. На следующем этапе необходимо выбрать функции, предикаты и константы для их представления. Начнем с отдельных логических элементов и перейдем к схемам.

Прежде всего необходимо иметь возможность отличать один логический элемент от других логических элементов. Это можно обеспечить, присвоив логическим элементам имена с помощью констант: x1, x2 и т.д. Хотя каждый логический элемент подключен к схеме своим индивидуальным способом, его поведение (способ преобразования входных сигналов в выходные) зависит только от типа. Для ссылки на тип логического элемента может использоваться функция. Например, можно написать Туре(Х1) =XOR. Тем самым вводится константа XOR для логического элемента конкретного типа; другие константы будут называться OR, AND и NOT. Функция Туре не является единственным способом регистрации онтологических различий. Для этого можно было бы использовать бинарный предикат, Type (x1, XOR), или несколько отдельных предикатов типов, таких как XOR (Χ1). Любой из этих вариантов вполне подходит, но выбирая функцию Туре, мы избегаем необходимости определять аксиому, в которой указано, что каждый отдельный логический элемент может иметь только один тип, поскольку это уже гарантирует сама семантика функций.

Затем рассмотрим клеммы. Логический элемент или цифровая схема может иметь одну или несколько входных клемм и одну или несколько выходных клемм. Можно было бы просто присвоить каждой из них имя с помощью константы, точно так же, как мы именовали логические элементы. Таким образом, логический элемент хг мог бы иметь клеммы с именами х1 1п1 Х11п2 и Х±Оиt1. Но следует избегать тенденции к созданию длинных составных имен. Назвав нечто Х11п1 мы не сделаем его первой входной клеммой х1 все равно потребуется указать это с помощью явного утверждения. По-видимому, лучше именовать клеммы логического элемента с помощью функции, так же, как мы именовали левую ногу короля Джона как LeftLeg(John). Таким образом, примем, что In(1,x1) обозначает первую входную клемму для логического элемента Х2. Аналогичная функция Out используется для выходных клемм.

Связь между логическими элементами может быть представлена с помощью предиката Connected, который принимает в качестве параметров имена двух клемм, как в выражении Connected ( Ou t (1, Х1) , In (1, Х2) ).

Наконец, необходимо знать, включен или выключен сигнал. Одна из возможностей состоит в использовании унарного предиката On, который принимает истинное значение, когда сигнал на клемме включен. Тем не менее при этом затрудняется постановка таких вопросов, как: "Каковы возможные значения сигналов на выходных клеммах схемы С1? Поэтому введем в качестве объектов два "значения сигнала", 1 и 0, и функцию Signal, которая принимает имя клеммы в качестве параметра и указывает значение сигнала для этой клеммы.